When building workbooks, users of spreadsheet application programs often utilize a number of functions for performing calculations in a spreadsheet. A class of functions that is often included in spreadsheets is volatile functions. Volatile functions are a class of functions that are recalculated whenever a calculation is performed on a spreadsheet because the return value of the function might change. For instance, the volatile function “Now( )” returns the current date and time based on a computer's clock and calendar functions. Thus, whenever a workbook is recalculated, if the scope of the calculation request covers a cell that contains the “Now( )” function, the function must be recalculated.
In order for other users to access the contents of multiple spreadsheets in a workbook, copies of the workbook or portions of it may be made. For instance, a workbook may be stored on a file server where multiple users can access the contents of the workbook on connected computers in a computer network. Users accessing a workbook copy from a server are then presented with any volatile functions in spreadsheets which will need to be recalculated on the networked computers.
Traditional methods of handling volatile functions in workbooks suffer from a number of drawbacks. First, spreadsheets in workbooks typically rely on a dependency chain in order to determine what needs to be calculated and in what order those calculations occur. The existence of volatile functions in a spreadsheet, however, not only requires that all volatile functions be calculated when a calculation request on the spreadsheet is made, but also requires all functions dependent on the outcome of such functions to be recalculated as well. As a result, the combination of volatile functions and their dependencies may result in the occurrence of many processing or calculation cycles in a workbook. For instance, if a cell A1 in a spreadsheet contains the “Now( )” function as a formula and another cell A2 has its value set to “=A1,” the volatile function would have to be calculated for both cells A1 and A2 in the spreadsheet. Another drawback concerning volatile functions may occur in network environments where the calculation and memory resources of a server may need to be shared by multiple users across multiple spreadsheets and thus, in many cases, may be considered scarce. Thus, the calculation and recalculation of volatile functions in these environments further strain these limited resources.
It is with respect to these considerations and others that the various embodiments of the present invention have been made.